﻿using System;
using FluentNHibernate.Mapping;
using Sebrae.Academico.Trilhas.Dominio.Classes;

namespace Sebrae.Academico.Trilhas.BM.Mapeamentos
{

    public sealed class UsuarioTrilhaMap : ClassMap<UsuarioTrilha>
    {
        /// <summary>
        /// Construtor.
        /// </summary>
        public UsuarioTrilhaMap()
        {
            Table("TB_USUARIOTRILHA");
            LazyLoad();

            Id(x => x.ID, "ID_USUARIOTRILHA").GeneratedBy.Identity();

            Map(x => x.DtInicio).Column("DT_INICIO").CustomType<DateTime>()
                .Access.Property()
                .CustomSqlType("DATETIME").Not.Update();

            Map(x => x.DtLimite).Column("DT_LIMITE").CustomType<DateTime>()
                .Access.Property()
                .CustomSqlType("DATETIME");

            Map(x => x.DtFim).Column("DT_FIM").CustomType<DateTime>()
                .Access.Property()
                .CustomSqlType("DATETIME");

            Map(x => x.NotaProva).Column("NU_NOTAPROVA");

            References(x => x.NivelOcupacional).Column("ID_NIVELOCUPACIONAL");
            References(x => x.Usuario).Column("ID_USUARIO");
            References(x => x.Trilha).Column("ID_TRILHA");
            References(x => x.TrilhaNivel).Column("ID_TRILHANIVEL");
            References(x => x.Uf).Column("ID_UF");
            References(x => x.StatusMatricula).Column("ID_StatusMatricula");
            Map(x => x.NomeUsuarioAtualizacao).Column("NM_USUARIOATUALIZACAO");
            Map(x => x.DataAlteracao).Column("DT_UltimaAtualizacao");
            HasMany(x => x.ListaItemTrilhaParticipacao).KeyColumn("ID_USUARIOTRILHA");
            HasMany(x => x.ListaTrilhaAtividadeInformativaParticipacao).KeyColumn("ID_USUARIOTRILHA");

        }
    }
}
